home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS Toolkit
/
BBS Toolkit.iso
/
qbbs
/
sutil044.zip
/
SUTIL.DOC
< prev
next >
Wrap
Text File
|
1993-03-11
|
67KB
|
1,531 lines
═════════════════════════════════════════════════════════════════════
Super BBS Utilities v0.44
by
Glenn Delahoy
(C) 1991 - 1993 Rough Productions
═════════════════════════════════════════════════════════════════════
SBBS Utilities is being developed as the all purpose Super BBS
utilities package. In one program it can perform maintenance and
produce reports on nearly all aspects of Super BBS, eliminating
many of those dinky little utilities that do one or two things. The
AUTO command makes it ideal to include in your daily maintenance
event.
I welcome any and all feedback that will help to improve it and make
it the most useful utility available for SBBS.
The output can be redirected to any device so you can make a log of
operations or send it to the printer.
SUTIL commands >SUTIL.LOG makes a log file
SUTIL commands >LPT1: makes a printout
You can also redirect individual functions in a script so you can
have seperate reports from seperate functions all being executed from
a single script.
If you redirect the output it will go to the screen as well.
═════════════════════════════════════════════════════════════════════
SYSTEM REQUIREMENTS
═════════════════════════════════════════════════════════════════════
CONFIGURATION
─────────────
SUtil does not require a configuration file. All the information it
needs regarding your bbs system it can read from the SBBS config
files directly. There are several functions that require information
that doesn't exist yet, for example the TWIT and UPGRADE functions.
These will be explained in detail later on.
ENVIRONMENT VARIABLES
─────────────────────
In order to find the SBBS files you need to have the SBBS environment
variable set (you should have this anyway). What this means to a
single node setup is that you don't have to do a thing.
For a multi-node setup you will need to set the SUTIL environment
variable which points to a line directory. This tells SUtil to look
in this directory for the SBBS config files CONFIG.BBS and
SCONFIG.BBS. For example:
SET SUTIL=C:\SUPERBBS\NODE1
If the TMP environment variable is found, it will use this path to
create any temporary files. If not found it will use the SUtil home
directory instead. Set this to a RAM drive to save significant
processing time and hard disk fragmentation. For example:
SET TMP=E:\
LANGUAGE CONFIG
───────────────
SUtil will search for a LANGUAGE.CTL file first in the line
directory, then in the system directory. If it is found, the first
entry is read. It will then look for this language file in first the
line directory, then the system directory. If it is not found, it
will look for DEFAULT.LNG in first the line directory, then the
system directory. If it is not found it will look for any language
file in first the line directory, then the system directory. Use
'About SUtil' to check which language file it is using. If it
reports it is unable to find a language file, please check your SBBS
setup.
If the text path set in the language config is unavailable it will
take the text directory from the line config files.
HELP
────
For help on any command line parameters type the command on its own
or the command followed by a ?. For a list of all available commands
type HELP.
═════════════════════════════════════════════════════════════════════
ENVIRONMENT
═════════════════════════════════════════════════════════════════════
If you type SUTIL at the dos prompt with no command line parameters
the menu driven environment will start. It is very intuitive and
should take you very little time to become familiar with.
You can get on-line help at nearly any point by pressing F1. Do this
when you first start it to see how it works. You can use your cursor
up and down keys, the page up and down keys and the home and end keys
to navigate the help text. When you are finished, press escape to
return to where you were. If you have selected a function and are
prompted for parameters, you can press F1 to get an explanation of
the parameters, then escape back to type them in. The help file is a
plain ASCII text file, so you can add your own help or examples if
you desire. Each help subject begins with the subject title enclosed
in asterisks and ends with the keyword 'end' in asterisks. The
maximum width is 74 columns.
To navigate the menu system, use your cursor up and down keys, page
up and down keys and the home and end keys to move the highlight to
the desired option, then press enter to select that option. To
escape from a menu to a previous menu you can either select quit,
which is always the last menu option, or press escape. When you
select a menu option, you will either be presented with a further
menu, be prompted for command line parameters or the option will be
executed.
When you are prompted for command line parameters, you just type in
the data required for each field. To move to the next field press
enter or tab. To move to the previous field, press shift-tab. To
execute the function, either press enter on the last field or press
F10. F1 will get help for the current function. In some cases, at
the dos prompt, you would need to use underscores to seperate words
for a single field, but in the environment this is not necessary. To
quit the function without execution, press escape.
After entering the parameters (for those functions that require it),
SUtil will revert to the normal dos display. If a function is
expected to return any information, the display will be captured and
fed into a report viewer. This allows you to scroll around the
captured text to view the entire output.
To navigate the report viewer, use your cursor keys to move
up/down/left/right, the page keys to move up/down 20 lines at a time,
the home/end keys to take you to the first/last column of the current
line and the cntl-home/cntl-end keys to take you to the first and
last line of the current column. Press F1 to get on-line help for
the viewer. F2 will allow you to save the report to a file of your
choice. F3 will allow you to edit the report before saving or you
can directly edit the files lists if viewing those. This function
will shell to a batch file called EDIT.BAT. This can be either in
the current directory or somewhere in the DOS path. This allows you
to use your favorite text editor. F4 is a simple string search
function. It searches from the current position. F10 will send the
report to the printer.
═════════════════════════════════════════════════════════════════════
AVAILABLE COMMANDS
═════════════════════════════════════════════════════════════════════
KILL Kill users
PACK Pack user base
SORT Sort user base
ASWPACK Answer file pack
COMMENT Update SysOp comment from ASW file
ALIAS Alias only user list
SCOUNT Super BBS download counter
BIMCOUNT BiModem download counter
FDCOUNT Front Door download counter
DBCOUNT DBridge download counter
POPCOUNT Portal Of Power download counter
LISTS Make master files list
NODENEWS Post nodelist news to msg
GAR Global attribute reset
GAS Global attribute set
GFR Global flag reset
GFS Global flag set
HIGHMSG Global reset highest message read
UPGRADE Upgrade users security
USERLIST List all users
FINDUSERS List users matching security/flags
SEARCHUSERS Search users for given string
RESETCOLORS Reset user colors to default
INFO System info
FILES Report on files base
HURL Hurl files and descriptions
RECOVER Recover corrupted user base
SORTFILES Sort files.bbs list
ADDFILES Add unlisted files
PACKFILES Remove offline files from lists
PLAY Play yell file
PAMS2BBS Pams -> bbslist.bbs
NODE2BBS Nodelist -> bbslist.bbs
CALLERS Add last caller to FD inbound
FDCALLERS Add FD last mail call to SBBS last callers
HIDELOCAL Hide local calls
ATTACH Local file attach
POST Post text file to msg area
ANNOUNCE Create msg of new files
TWIT Delete msgs from any person/subject
CLEANMSG Clean message headers
BOARDS Report of message base
TRIMLOG Trim system log
DATEFILE Renames any file to today's date
FRDIRS Create list of freq dirs
DOORUPDATE Update door counter
DOORRESET Reset door counter
DOORREPORT Report door config
DOORGRAPH Create graphs of door counters
DOORBAUD Changes baud setting in dorinfo file
LOSTCARRIER Post msg to callers who drop carrier
CARRIERREPORT Report callers who have dropped carrer
CARRIERRESET Reset lost carrier counters
FREQ Create netmail file request
FATT Create netmail file attach
SETYELL Set yell on/off
LIMITS Comparative report of user limits
SEARCHFILES Search files lists for given string
BBSLIST View BBSLIST file
KILLCOMMS Kill old message comments
SORTFLSEARCH Sort files config
AUTO Run commands in script file
HELP List all available commands
═════════════════════════════════════════════════════════════════════
USER BASE
═════════════════════════════════════════════════════════════════════
KILL USERS
──────────
Usage: KILL <lowest security> <highest security> <days> [PACK]
{lowest security = lowest security to kill}
{highest security = highest security to kill}
{days = days old to kill}
{PACK = optionally pack user base}
Marks as deleted any users within the security range specified
*inclusive* that have not called in <days> number of days. This
allows a range of securities or a single security level to be
deleted. For example if you want to kill all users from level 20 to
level 40 who are older than 120 days then type:
KILL 20 40 120
If you want to kill all users at security level 10 who are older than
60 days then type
KILL 10 10 60
Further, you can delete all users within a range or single security
level immediately. For example to delete all users from level 0 to
level 4, type:
KILL 0 4 0
Or only level 0 immediately:
KILL 0 0 0
This allows flexibility for keeping different level users for
differing lengths of time. For instance, your new users at level 5
who never do much and probably won't call back can be deleted quickly
whilst you can allow those who have been upgraded time to get back
from their vacation.
PACK USER BASE
──────────────
Packs user base, removing 'deleted' users.
SORT USER BASE
──────────────
Usage: SORT <mode>
{mode = F, L, A, D, G, E, T, I, M, S}
{F = First name}
{L = Last name}
{A = Ascending security}
{D = Descending security}
{G = Ascending age}
{E = Descending age}
{T = Ascending calls}
{I = Descending calls}
{M = Ascending msgs Posted}
{S = Descending msgs Posted}
Sorts the user base according to the mode on the command line. The
mode can be stacked. For example SORT LD will sort by last name and
then by descending security. Think in reverse when stacking the sort
mode. For example if the first priority is security, it should be
the last entry in the sort mode. Before Sutil starts the sort it will
attempt to clean up the users entries. It will remove any commas and
compress any multiple spaces.
The SysOp, as set in the config will be the first entry in the user
base, followed by other entries with SysOp security, followed by the
rest of the user base as specified in the sort mode.
ANSWER FILE PACK
────────────────
Usage: ASWPACK <file>
{file = answer file, no extension}
This will remove any entries from your questionnaire answer files
from users who no longer exist in the user base.
UPDATE SYSOP COMMENTS FROM ANSWER FILE
──────────────────────────────────────
Usage: COMMENT <keyword> [answer file]
{keyword = keyword to search for in answer file}
{answer file = answer file to use, no extension (default=NEWUSER) }
Scans the given questionnaire answer file looking for the given
keyword. Any text on the same line immediately following the keyword
will be written into the SysOp Comment field in the user base for
that user. The most recent entry in the answer file will always be
used.
ALIAS ONLY LIST
───────────────
Creates an alias only list of users that looks a lot like the normal
SBBS user list. This is useful for systems that use aliases only, no
real names. The config file is read to get the text directory where
the two files are created.
GLOBAL ATTRIBUTE RESET
──────────────────────
Usage: GAR <sec> <attribute>
{sec = security or ALL}
{attribute = valid user attribute}
Valid User Attributes:
0. Deleted 9. Log On New Files Check
1. Screen Clear Codes 10. No D/l Ratio
2. Page Pause 11. Female
3. Graphics 12. Delete File After Viewing
4. No Kill 13. Display File Once
5. Ignore D/l Hours 14. File Viewed
6. ANSI Editor 15. Full Screen Viewer
7. Do Not Disturb 16. Combined Mail Check
8. Log On Mail Check 17. No Hotkeys
Switches off the user attribute you specify for every user at the
specified security. If security is ALL then the attribute is
switched off for all security levels.
GLOBAL ATTRIBUTE SET
────────────────────
Usage: GAS <sec> <attribute>
{sec = security or ALL}
{attribute = valid user attribute}
Switches on the user attribute you specify for every user at the
specified security. If security is ALL then the attribute is
switched on for all security levels. Attributes as above.
GLOBAL FLAG RESET
─────────────────
Usage: GFR <sec> <flag>
{sec = security or ALL}
{flag = A1 to D8}
Switches off the user flag you specify for every user at the
specified security level. If the security is ALL then the flag will
be reset for all security levels.
GLOBAL FLAG SET
───────────────
Usage: GFS <sec> <flag>
{sec = security or ALL}
{flag = A1 to D8}
Switches on the user flag you specify for every user at the specified
security level. If the security is ALL then the flag will be set for
all security levels.
UPGRADE USERS SECURITY
──────────────────────
Usage: UPGRADE <controlfile>
{controlfile = text file containing security specs}
Scans the user base and upgrades any users that meet the criteria as
listed in the specified control file. The control file is a text
file with one spec per line as follows:
<current security> <new security> <msgs> <upk> <calls>
Each line contains old and new security specs and the criteria that
must be matched in order to be upgraded to the new security, each
number is seperated by a space. Any missing numbers will cause SUtil
to barf in a big way.
Each user must be at the 'current security' and have at least the
number of messages, uploads in KB's and calls specified in order to
be upgraded to the 'new security'. If you are not concerned what the
current security is, so long as they meet the other qualifications,
then put '-1' as the current security. If you are not concerned
about any of the qualifications (msgs,upk,calls) then put '0' for
that parameter. Any line beginning with a semi-colon (;) is treated
as a remark and is ignored.
For example:
;sample upgrade security control file
5 10 20 100 20
10 20 0 0 20
-1 30 100 400 50
For the first line, any users currently at level 5 will be upgraded
to level 10 if they have entered 20 or more messages AND uploaded
100KB or more AND called 20 or more times. For the second line, any
users currently at level 10 will be upgraded to level 20 if they have
called 20 or more times (because the other parameters are 0 they are
effectively not used). For the third line, any users, regardless of
their current level, will be upgraded to level 30 if they have
written 100 or more messages AND uploaded 400 KB or more AND have
called 50 or more times.
USER LIST
─────────
Usage: USERLIST [options]
{options = FORM (output format - defaults to list format)}
{options = CITY|SECURITY|ALIAS|DOB|AGE|HOMEPHONE|DATAPHONE}
{options = FIRSTCALL|UPS|UPK|DOWNS|DOWNK|RATIOK|MSGS|CALLS}
{options = MINUTES|COMMENT}
Makes a list of all users including the information specified on the
command line. Any combination of options is allowed. For example:
USERLIST ALIAS SECURITY
will produce a list of users' names and their aliases and security.
If you include FORM on the command line the output will be formatted
one field per line, otherwise it is in list format.
FIND MATCHING USERS
───────────────────
Usage: FINDUSERS [NOT] [/Sx] [/Fx]
{/S = security to find}
{/F = flag to find}
{NOT = Find users not matching}
Will list any users it finds that matches the criteria on the command
line. You can use either security or flags or both. If you use only
one criteria, it will list all users that match it. If you use both
criteria, it will list all users that match both. For eg:
FINDUSERS /S20
Finds all users with security level 20.
FINDUSERS /Fa1
Finds all users with flag A1 set.
FINDUSERS /S20 /Fa1
Finds all users with security level 20 AND flag A1 set.
If you include the NOT option, then SUtil will list all users that do
not match the criteria.
FINDUSERS NOT /S20
Will list all users who are not at security level 20.
RECOVER USER BASE
─────────────────
Attempts to reconstruct a corrupted user base. It compares the
USERS.BBS against the SUSERS.BBS. Any entries it finds in USERS.BBS
that can't be found in SUSERS.BBS will be saved and dummy data
created for it's SUSERS.BBS counterpart. The extra user pointer in
users.bbs is set to -1, this will force SBBS to ask the user for the
susers.bbs details next time he/she logs on. You will need to reSORT
the user base after a recover in order to create a new nameidx file.
BE WARNED!! Do a backup before playing with this and then only use
it in emergencies.
GLOBAL RESET HIGHEST MESSAGE READ
─────────────────────────────────
Usage: HIGHMSG <msg number>
{msg number = between 0 & 32767}
Resets 'highest message read' counter for all users to the number
specified on the command line.
SEARCH USERS
────────────
Usage: SEARCHUSERS <string>
Searches user records and reports any occurrances of the specified
string. This is useful for finding users in the same town or area
code or users that have suspiciously similar passwords or maybe a
number of users have the same phone number.
RESET USER COLORS
─────────────────
Resets all users colors to the default specified in the SBBS config.
LIMITS REPORT
─────────────
Usage: LIMITS
Creates a report comparing user limits for all security levels.
POST MESSAGE TO CALLERS WHO DROP CARRIER
────────────────────────────────────────
Usage: LOSTCARRIER <logfile> <textfile> <board>
{logfile = full path and name of system log file}
{textfile = text file to post}
{board = message base board number to post to}
Scans the system log and looks for callers who have dropped carrier.
It then reads the text file replacing any parameters and posts it to
the caller in the specified board number.
Replacable parameters are:
^D (ASCII 4) Date caller dropped carrier
^T (ASCII 20) Time caller dropped carrier.
A sample text file is enclosed. If any lost carriers are found, the
user's lost carrier counter is updated in the USERS.BBS file. The
place used in this file is known as ExtraSpace1 and is currently
unused. This may change in future versions of SBBS.
LOST CARRIER REPORT
───────────────────
Usage: CARRIERREPORT [entries]
{Entries = Number of entries to include}
Displays a sorted list of users who have dropped carrier. 'Entries'
is the maximum number of entries to include. If omitted, all users
who have dropped carrier are included. This report can be captured
via redirection and posted to the message base.
LOST CARRIER RESET
──────────────────
Usage: CARRIERRESET <user name>
{User Name = User's name to reset or ALL}
Resets the lost carrier counter for the specified user. If the user
name is ALL then all users are reset.
KILL OLD MESSAGE COMMENTS
─────────────────────────
Usage: KILLCOMMS
Deletes '.INF' message comment files in the local file attach
directory from users who no longer exist in the user base.
═════════════════════════════════════════════════════════════════════
SYSTEM FILES
═════════════════════════════════════════════════════════════════════
PLAY YELL FILE
──────────────
Usage: PLAY [yell file]
{yell file = any file in current directory}
{ any file in any directory}
{ defaults to SBBSYELL.CTL in current Dir}
Plays the yell control file approximately how it would be heard from
the bbs. The speed seems to be machine dependant, otherwise it's
pretty accurate.
PAMS2BBS
────────
Usage: PAMS2BBS <pamsfile> <state>
{pamsfile = full path, extension of pams list (BBSAALL.DAT?)}
{state = VIC, NSW, QLD, ACT, NT, SA, TAS, WA}
Creates a BBSLIST.BBS file from the Australian BBS directory 'all'
file that can be used with the SBBS bbs list functions. As of the
last release of the Aust BBS directory, the file required for this
function is called BBSAALL.DAT. As this may change in the future I
have made this file a command line option. The second option is the
state you want listed.
NODE2BBS
────────
Usage: NODE2BBS <Zone:Net>
{Zone = Network zone to include}
{Net = Net to include or 0 for all}
Creates a BBSLIST.BBS file from a fido compatible nodelist. It
searches the SBBS config file to find the nodelist directory, then
looks for the first nodelist in that directory. Note that this is
not necessarily the latest one. You must specify zone and net
numbers. For example, 3:635, is zone 3, net 635. To specify all
nets in a zone type, 3:0. If the zone isn't found you get a nice
zero length bbslist file.
TRIM SYSTEM LOG
───────────────
Usage: TRIMLOG <logfile> <days>
{logfile = full path and file name of system log file}
{days = number of days to keep in log}
Scans specified system log file and removes entries older than
specified number of days. Before it starts it makes a copy of the
log file to *.BAK so in case it dies half way you can recover the
log. If a *.BAK file already exists it is deleted.
NODE NEWS
─────────
Usage: NODENEWS <board>
{board = message area to post news}
Extracts any news bulletins in the current nodelist and writes it to
a message area specified on the command line. Put this after your
nodediff update.
UPDATE FRONT DOOR INBOUND HISTORY
─────────────────────────────────
Usage: CALLERS [dir]
Examines the SCALLERS.BBS file to get the last caller online. Inserts
this info into the Front Door INBOUND.HIS and LASTCALL.FD files. You
can then use the FD inbound history to see what bbs callers you've
had and the last caller shows up on the FD main screen. Note that
SBBS doesn't put the SysOp into the SCALLERS.BBS file. The last
caller will be the last caller that isn't the SysOp. In the FD
inbound history the received bytes will be the caller's total
uploads, the sent bytes will be the caller's downloads for today and
the cost will be the caller's age.
If you run FD 2.02 then you do not need the dir parameter. If you
are running the commercial version (2.10) then the dir parameter
should point to the Front Door system directory where all inbound and
lastcall files are stored. If this parameter is used SUtil will look
for the TASK environment variable used by FD to construct the file
names INBx.HIS and LASTCx.FD where 'x' is the TASK number.
In summary:
If you have FD 2.02 then
SUTIL CALLERS
will update INBOUND.HIS and LASTCALL.FD files.
If you have FD 2.10 then
SUTIL CALLERS [dir]
will update INBx.HIS and LASTCx.FD files in the 'dir' directory using
the TASK environment variable for 'x'.
This has only been tested with FD 2.02 and 2.10.
UPDATE SBBS INBOUND HISTORY
───────────────────────────
Usage: FDCALLERS [dir]
Examines the Front Door LASTCALL file to get the last mail call.
Inserts this info into the SBBS SCALLERS file. You can then use the
SBBS 'view today's callers' or 'view last 15 callers' to see what
mail calls you've had. Because FD doesn't store the log on and log
off times seperately these will be the same in the scallers file.
Also the baud and age are not known.
If you run FD 2.02, you do not need the dir parameter. If you are
running the commercial version (2.10), the dir parameter should point
to the Front Door system directory where all inbound and lastcall
files are stored. If this parameter is used SUtil will look for the
TASK environment variable used by FD to construct the file names
INBx.HIS and LASTCx.FD where 'x' is the TASK number.
In summary:
If you have FD 2.02 then
SUTIL FDCALLERS
will read INBOUND.HIS and LASTCALL.FD files.
If you have FD 2.10 then
SUTIL FDCALLERS [dir]
will read INBx.HIS and LASTCx.FD files in the 'dir' directory using
the TASK environment variable for 'x'.
This has only been tested with FD 2.02 and 2.10.
HIDE LOCAL CALLS
────────────────
Usage: HIDELOCAL <baud>
{baud = new baud setting for local calls}
Scans SCALLERS.BBS and converts any baud settings of 0 to new setting
specified on the command line. This has the effect of making local
log-ons look like remote calls when viewing Today's Calls and Last 15
Callers.
SET YELL
────────
Usage: SETYELL <control file>
{control file = text file specifying yell times}
This function reads the control file specified and toggles the Scroll
Lock according to the time of day. The Scroll Lock, when switched
off, allows users to yell if other config settings allow it, if
switched on the user is unable to yell at all. Set this option in
your bbs batch file right before the bbs starts up to allow greater
flexibility of SysOp availability.
The control file is a text file with one day's entry per line. Lines
beginning with a semi-colon are ignored. The first entry in a line
is a Yell On time, the next is a Yell Off time and so on, each is
separated by a space and must be between 00:00 and 23:59. The first
valid line will be Sunday, the second Monday etc.
Example Yell.Ctl
;sunday
11:00 18:00
;monday
10:00 17:30 19:30 23:00
;tuesday
10:00 17:30 19:30 23:00
;wednesday
10:00 12:30 13:30 17:30 19:30 23:00
;thursday
10:00 17:30 19:30 23:00
;friday
10:00 17:30 19:30 23:00
;saturday
11:00 17:00
In this example users will be able to yell on Sunday between 11am and
6pm, on Monday, Tuesday, Thursday and Friday between 10am and 5:30pm
and again between 7:30pm and 11pm, on Wednesday between 10am and
12:30pm, 1:30pm and 5:30pm and again between 7:30pm and 11pm.
FInally on Saturday between 11am and 5pm.
To give complete control to this system you will need to set the yell
times in the SBBS config to 00:00 - 24:00 on all days.
VIEW BBSLIST FILE
─────────────────
Usage: BBSLIST [list file]
Displays the given BBSLIST file. If no file name is given,
BBSLIST.BBS is used. The file name can be anything.
═════════════════════════════════════════════════════════════════════
FILES BASE
═════════════════════════════════════════════════════════════════════
SUPER BBS DOWNLOAD COUNTER
────────────────────────
Usage: SCOUNT <logpath>
{logpath = path & name of SBBS log}
Updates the download counters in your FILES.BBS files according to
entries in the Super BBS log file. Specify the complete path, file
name and extension of the log on the command line. This function may
barf the first time you use it on a log file greater than around 1
MB. You will need to trim the log until scount works. After that the
size is not important.
BIMODEM DOWNLOAD COUNTER
────────────────────────
Usage: BIMCOUNT <logpath>
{logpath = path & name of BiModem log}
Updates the download counters in your FILES.BBS files according to
entries in the BiModem log file. Specify the complete path, file
name and extension of the BiModem log on the command line. This
function may barf the first time you use it on a log file greater
than around 1 MB. You will need to trim the log until bimcount
works. After that the size is not important.
FRONT DOOR DOWNLOAD COUNTER
───────────────────────────
Usage: FDCOUNT <logpath>
{logpath = path & name of log}
Updates the download counters in your FILES.BBS files according to
entries in the Front Door log file. Specify the complete path, file
name and extension of the FD log on the command line. This function
may barf the first time you use it on a log file greater than around
1 MB. You will need to trim the log until fdcount works. After that
the size is not important.
DBRIDGE DOWNLOAD COUNTER
────────────────────────
Usage: DBCOUNT <logpath>
{logpath = path & name of log}
Updates the download counters in your FILES.BBS files according to
entries in the DBridge log file. Specify the complete path, file
name and extension of the DB log on the command line. This function
may barf the first time you use it on a log file greater than around
1 MB. You will need to trim the log until dbcount works. After that
the size is not important. Because DBridge doesn't specify the full
path in it's log, all files with a name given in the log will be
updated.
PORTAL OF POWER DOWNLOAD COUNTER
────────────────────────────────
Usage: POPCOUNT <logpath>
{logpath = path & name of log}
Updates the download counters in your FILES.BBS files according to
entries in the Portal Of Power log file. Specify the complete path,
file name and extension of the log on the command line. This
function may barf the first time you use it on a log file greater
than around 1 MB. You will need to trim the log until popcount
works. After that the size is not important.
MAKE MASTER FILES LISTS
───────────────────────
Usage: LISTS <masterlist> <newlist> <security> <days>
{masterlist = name of master list to create}
{newlist = name of new files list to create}
{security = file area security to include}
{days = days to include in new files}
Creates a master files list and a new files list of all file areas
including only those areas with security equal to or less than that
specified. Will include at the top of both lists, the contents of a
file BANNER.TXT if found in the SUtil home directory. SUtil reads
the default.lng file or any language file found in the system
directory to get the string for files not found. The new files list
includes files in the security allowed areas that are equal to or
younger than that specified.
FILES BASE INFORMATION
──────────────────────
Usage: FILES
Generates useful information regarding your files base. Reports
totals in each area for files listed, files on-line, total size in
bytes, new files, files off-line and downloads and totals for all
areas. The new files is controlled by the date stamp of the ANNOUNCE
file found in the sutil home directory. If it is not found it is
created.
SORT FILES
──────────
Usage: SORTFILES <files dir|ALL>
Sorts the files.bbs file listed for the files directory you specify.
To sort the files list for the Telix directory, type: SUTIL SORTFILES
TELIX. SUTIL will search the FLSEARCH file for the directory and
list name to sort. So far this function will work on lists that have
multiple description lines but will NOT work on lists that have
sub-headings scattered through the list. It should keep you amused
for hours trying to piece it back together.
PACK FILES LISTS
────────────────
Usage: PACKFILES <files dir|ALL>
Removes file description from files lists for any file that cannot be
found on the disk. Specify the directory or ALL to scan all areas.
SUtil will search the FLSEARCH file for the directory and list name
to pack. Will also remove any extra descriptions following a missing
file entry.
ADD UNLISTED FILES
──────────────────
Usage: ADDFILES <files dir|ALL>
Adds a new file description for any file found in the given area that
is not already listed. Specify the directory or ALL to scan all
areas. SUtil will search the FLSEARCH file for the directory and
list name to process.
HURL FILES
──────────
Usage: HURL <Source> <Destination> [SORT]
{Source = area directory and files}
{Destination = area directory}
{sort = optionally sort the destination list}
Hurls one or more files and descriptions anywhere within your defined
files base. No need to type in the whole path, just the file's own
directory and file name and the destination directory. For example
if a user has just uploaded HOST44.ZIP and you want to put it in the
TELIX directory, type the following:
SUTIL HURL UPLOADS\HOST44.ZIP TELIX
This might translate to:
From: C:\SUPERBBS\FILES\UPLOADS\HOST44.ZIP
To: C:\SUPERBBS\FILES\TELIX\HOST44.ZIP
or whatever is configured in your flsearch.bbs file. If the file
can't be found then just the description will be hurled. If neither
the file or the description can be found then no action will be
taken.
To automatically sort the destination list after the hurl then
include the keyword SORT as the last word on the command line. For
eg:
SUTIL HURL UPLOADS\HOST44.ZIP TELIX SORT
You can specify multiple source files to hurl. For example, a user
has just uploaded the Telix package in three files which you want to
hurl to the Telix area.
SUTIL HURL UPLOADS\TLX315-1.ZIP TLX315-2.ZIP TLX315-3.ZIP TELIX SORT
This will hurl all three files from the Uploads area to the Telix
area and sort the Telix list when done.
Or alternatively, you can use wild cards such as the following:
SUTIL HURL UPLOADS\TLX315*.* TELIX SORT
or even:
SUTIL HURL UPLOADS\TLX315-?.ZIP TELIX SORT
LOCAL FILE ATTACH
─────────────────
Usage: ATTACH <user> <file> [description]
{user = User to receive file}
{file = File to send}
{description = Description of file to send}
{Use underscores instead of spaces in user name and description}
This function allows you to do a local file attach to a user at the
dos prompt or maybe do daily file attaches to co-sysops from the
daily maintenance. Gets the file attach directory from the
SCONFIG.BBS file and checks that the user exists in the user base.
The description is optional. When you type the user name and the
description you must use underscore characters in place of spaces.
SUtil will replace them as it works. This is not necessary if
working from the environment.
ANNOUNCE NEW FILES
──────────────────
Usage: ANNOUNCE <board> [exclude file]
{board = message area to post announcement}
{exclude file = text file with paths/files to exclude}
Creates a message describing new files on the system. Initially,
this function will create a zero length file called "announce" in the
'home' directory of SUtil. This is used to remember the last date
that this function was run, so that the next time it is run it will
compare file dates against this date to decide which is new. Each
successive time it is run it will update the date on this file. This
way you can run it daily, weekly or whenever you like and it will
catch all the new files since the last time it was run. To alter the
last date simply alter the date on this file or delete it altogether
to start again from today.
The optional exclude file is a text file listing paths and/or files
you wish to exclude from the new files announcement. The paths must
have a trailing backslash. Comments must start with a semi-colon
(;). For example:
;exclude file for announce function
c:\superbbs\files\uploads\
c:\superbbs\files\private\
c:\superbbs\files\rough\rough.zip
CREATE FREQ DIRECTORY LIST
──────────────────────────
Usage: FRDIRS <file> <sec>
{file = file to create containing freq directories}
{sec = security of files areas to include in list}
Creates a text file containing full paths to your files area
including areas of specified security or lower. This file is used,
for example, by Front Door to search for file requested files. For
example:
SUTIL FRDIRS C:\FD\DIRS.FRQ 5
SEARCH FILES LISTS
──────────────────
Usage: SEARCHFILES <search string>
{search string = any combination of characters to look for}
Searches all files.bbs files for the given search string and reports
any areas it was found in. Case not sensitive.
SORT FILES AREA CONFIG
──────────────────────
Usage: SORTFLSEARCH <mode>
{mode = N = Area Name}
{ A = Ascending security}
{ D = Descending security}
Sorts the files area config file according to the mode specified.
The mode can be stacked. For example SORTFLSEARCH NA will sort by
area name and then by ascending security. Think in reverse when
stacking the sort mode. For example if the first priority is
security, it should be the last entry in the sort mode.
═════════════════════════════════════════════════════════════════════
MESSAGE BASE
═════════════════════════════════════════════════════════════════════
POST FILE TO MESSAGE
────────────────────
Usage: POST <board> <file> <to> <from> <subject> [/D]
{board = message base board number}
{file = text file to post}
{to = who is message addressed to}
{from = who is message from}
{subject = message subject}
{/D = optionally delete file after posting}
Works similar to many mail tossing programs. Allows you to post a
text file as a message to the hudson message base. Specify each
parameter separated by a space. For the parameters that might have
multiple words (to,from,subject) use the underscore character instead
of spaces. If you include the /D parameter after the subject
parameter the file will be deleted after posting.
TWIT
────
Usage: TWIT </Ffrom|/Ssubject|@file>
{from = person who's messages to delete}
{subject = subject text to look for}
{file = text file with twit specs}
Marks as deleted any messages written by a particular person or any
messages with the given text included in the subject. Use only one
of either the person, subject or specification file on the command
line. For example:
TWIT /FGlenn Delahoy
Will delete any messages from Glenn Delahoy.
TWIT /Stest
Will delete any messages that have 'test' included in the subject
line.
TWIT @sutil.twt
Will read the text file 'sutil.twt' to get the specifications. The
spec file has one spec per line, each starting with either /F or /S
for the From field or the Subject field. It is not case sensitive
and does not need underscores. A sample spec file is enclosed.
CLEAN MESSAGE HEADERS
─────────────────────
Usage: CLEANMSG
Scans message base headers and removes any 're:' bits from the
subject field.
MESSAGE BASE REPORT
───────────────────
Usage: BOARDS
Scans message base headers and reports total messages, number of
local messages, number of received incoming messages, number of
active users, total size in bytes and average message size for each
area.
The number of active users for each area is based on the number of
users whose extended lastread pointer is greater than or equal to the
lowest message number for that area.
═════════════════════════════════════════════════════════════════════
DOORS
═════════════════════════════════════════════════════════════════════
This set of functions maintains and reports door usage. Useful for
determining the popularity, or lack of, of your on-line doors. This
has only been tested with SBBS 1.16b. In this version there is a
little spare room in the door templates which may be used by Aki in
later versions.
UPDATE DOOR COUNTER
───────────────────
Usage: DOORUPDATE <door>
{door = door template number}
Updates the door counter for the given door template number. Insert
this into your doors batch file after each door exits and before the
bbs restarts. Eg:
SUTIL DOORUPDATE 14
This adds one to the counter for door number 14 in the template.
RESET DOOR COUNTER
──────────────────
Usage: DOORRESET <door>
{door = door template number or ALL}
Resets the door counter for the given door template number to 0. If
you remove a door from the bbs or replace it with a new one you will
want to reset it's template counter to get an accurate picture of
it's popularity. Eg:
SUTIL DOORRESET 14
To reset all doors to 0 type:
SUTIL DOORRESET ALL
DOORS REPORT
────────────
Usage: DOORREPORT
Reports config for all active doors.
CREATE GRAPHS OF DOOR COUNTERS
──────────────────────────────
Usage: DOORGRAPH
Creates ANS/ASC graphs of the door counters in the text directory.
Only includes active doors. If you have more than 22 active doors
then it will create multiple graphs. The first will be called
DOORGR1.ASC/ANS, the second will be DOORGR2.ASC/ANS etc. for as many
screens as is required.
CHANGE DORINFO BAUD SETTING
───────────────────────────
Usage: DOORBAUD <dorinfo> <new baud>
{dorinfo = full path/file name to dorinfo file}
{new baud = new baud rate to insert}
Changes the baud rate setting in the specified dorinfo file to the
new setting given by <new baud>. This is useful for doors that don't
recognise a locked port and try to communicate at the connect speed.
This is the case for most Mycroft doors I have tried. For example if
you have your com port locked at 19200 and a door doesn't like it,
try the following:
SUTIL DOORBAUD dorinfo1.def 19200
This tells the door to communicate at 19200 instead of whatever SBBS
thinks it is.
═════════════════════════════════════════════════════════════════════
MISCELLANEOUS
═════════════════════════════════════════════════════════════════════
SYSTEM INFORMATION
──────────────────
Usage: INFO
Generates a page of useful general information relating to your BBS
and it's users.
RENAME FILE TO TODAY'S DATE
───────────────────────────
Usage: DATEFILE <file>
{file = file to be renamed to today's date}
Renames the specified file using today's date in the format
yy-mm-dd.ext. For example to rename the system log type:
SUTIL DATEFILE \SUPERBBS\SYSTEM.LOG
The resulting file would be:
\SUPERBBS\92-05-30.LOG
... or whatever the date happens to be. The reason for the
particular format for the date is when Xtree or other such programs
list the files in alphabetical order these files will show up in the
correct chronological order. Here's a little segment of my daily
maintenance batch file that makes a daily backup of the user base.
cd \superbbs
pkzip \superbbs\backup\userbak lastread.bbs nameidx.bbs users.bbs susers.bbs
sutil datefile \superbbs\backup\userbak.zip
If the file name it wants to use to rename the file already exists it
will attempt to rename the extension until it finds an unused file
name.
CREATE FILE REQUEST MESSAGE IN NETMAIL DIRECTORY
────────────────────────────────────────────────
Usage: FREQ <attrib> <address> <files>
{attrib = netmail attribute}
{address = full zone:net/node address}
{files = one or more files to request}
Creates a file request MSG in your netmail directory as specified in
your SBBS config. Each file should be separated by an underscore.
The msg packet attributes are set as specified by the 'attrib'
parameter.
Valid netmail attributes:
P = private C = crash
K = kill H = hold
D = direct I = immediate
N = none
This function can be used by your callers via a questionnaire, two
menu options and a batch file. For eg:
Type Options
12 FREQ
7 *C /c makefreq.bat
MAKEFREQ.BAT
del freq.bat
ren freq.asw freq.bat
call freq.bat
The questionnaire creates the freq.asw file which is renamed to a
batch file then called to fire sutil to create the file request.
Tricky stuff! O-) A sample questionnaire is enclosed.
CREATE FILE ATTACH MESSAGE IN NETMAIL DIRECTORY
───────────────────────────────────────────────
Usage: FATT <attrib> <address> <file>
{attrib = netmail attribute}
{address = full zone:net/node address}
{file = file to attach}
Creates a file attach MSG in your netmail directory as specified in
your SBBS config. The msg packet attributes are set as specified by
the 'attrib' parameter. Only one file at a time on this one.
Valid netmail attributes:
P = private C = crash
K = kill H = hold
D = direct I = immediate
N = none
RUN SCRIPT FILE
───────────────
Usage: AUTO <scriptfile>
{scriptfile = full path & extension}
Performs the commands contained in the specified script file. Each
line of the file should have one command typed exactly how you would
normally type it on the DOS command line, minus the SUTIL bit of
course. Any line beginning with a semi-colon (;) is treated as a
remark and is ignored. From within a script file you can call
another script file much the same way that DOS can call a batch file
from within a batch file. When it has finished the embedded script
file, it returns and continues on the first one. A sample script
file is enclosed.
Individual items in a script can be redirected to an output file
using the normal dos redirection characters for append and create.
For example:
;sutil sample script
INFO >SUTIL.LOG
UPGRADE SUTIL.UPG >USERS.LOG
FILES >>SUTIL.LOG
SORT LID >>USERS.LOG
CALLERS
In this script the output from INFO is sent to a new file called
SUTIL.LOG, the output from UPGRADE is sent to a new file called
USERS.LOG, the output from FILES is appended to the file called
SUTIL.LOG, the output from SORT is appended to the file called
USERS.LOG, the output from CALLERS is sent to the screen only.
═════════════════════════════════════════════════════════════════════
ERRORS
═════════════════════════════════════════════════════════════════════
Well, no one's perfect O-) Here's a list of errors likely to occur
during an SUtil session and possible causes. If the error persists
please see your doctor, or failing that tell me! It will be a help
if you can send me any relevant files SUtil was reading when it
crashes and a screen capture of the SUtil output, makes for quick
fixes if I know the exact situation.
5 Illegal function call
Probably attempting to extract data from a text file
(logs,files.bbs?) and came across unexpected text.
6 Overflow
Variable data has gone unexpectedly high.
7 Out of memory
You need to find more memory for SUtil to work with.
9 Subscript out of range
Possibly a corrupted data file.
11 Division by zero
Possibly a corrupted data file or invalid command parameters.
14 Out of string space
The data you want to manipulate is too large.
24 Device timeout
Some hardware device is not responding. Check your connections.
25 Device fault
Some hardware device is not responding. Check your connections.
52 Bad file name or number
Incorrect command line parameters or more likely shocking
programming techniques O-)
53 File not found
Incorrect path or file name.
57 Device I/O error
Your disk is not responding. You got problems! O-)
58 File already exists
Try a different file name.
59 Bad record length
Possibly corrupted data file.
61 Disk full
Time to buy that big disk O-)
62 Input past end of file
Possibly corrupt file.
63 Bad record number
Corrupt data file (Susers.bbs, message base ??).
64 Bad file name
Incorrect command line parameter.
68 Device unavailable
Disk system malfunctioning (uh oh!)
70 Permission denied
Some other process is using a file. Close other processes
before trying again.
71 Disk not ready
Check your disk drive.
72 Disk-media error
Damaged disk surface or corrupted format.
75 Path/File access error
Invalid path or disk not ready.
76 Path not found
Directory doesn't exist.
═════════════════════════════════════════════════════════════════════
REGISTRATION
═════════════════════════════════════════════════════════════════════
This program is not crippled in any way. The choice is entirely
yours to register it. Registration is $25 and you will receive the
latest version with your name nicely displayed in the opening screen
and lists. Call Rough Productions BBS and download the latest
evaluation version or file request SUTIL from 3:635/572@Fidonet.
I can also be reached via the SUPERBBS International FidoNet echo.
If you wish you can contact me direct at Rough Productions. Send a
Crash netmail to Rough Productions Australia, Fidonet 3:635/572,
telephone 61-059-98-3639. Poll again 24 hours later for a reply.
═════════════════════════════════════════════════════════════════════
ACKNOWLEDGEMENTS
═════════════════════════════════════════════════════════════════════
My sincerest thanks to the fabulous d00ds on the beta team:
Jonathan Holmes Limited Edition 3:635/570 61-3-794-6996
Tom Steiszkal Pat's Place..... 3:633/354 61-3-354-8462
Marcus Limosani The Infinity Links 3:633/262 61-3-850-9115
Nick Varvaris Colossus Of Rhodes 3:633/356 61-3-376-4683
I hope your patience has been rewarded.
═════════════════════════════════════════════════════════════════════
REVISION NOTES
═════════════════════════════════════════════════════════════════════
0.15 Beta release.
0.16 Removed download counter, SBBS one works more or less. Added
LASTREAD.BBS consideration to RECOVER. Added AUTO option.
Added ANSI overview screen.
0.17 Streamlined INFO function and added FILES function. Still
expanding that one. Added PAMS2BBS function.
0.18 Added ALIAS function.
0.19 In RECOVER, the extra user pointer is set to -1. Moved the
CLEAN USERS routine into the sort routine. In HURL, added
code to allow files to be hurled to a different disk. Also if
the file can't be found then the description will be hurled.
0.20 Added SORTFILES function. Feedback on this in particular
please. Added PLAY function. Added SORT option to HURL
function.
0.21 The SORTFILES function now sorts a list with multiple
description lines but will NOT sort a list with multiple
sub-headings.
0.22 Overview files are now created directly in the text directory.
Added CALLERS option to put the last caller into the FD
inbound history file. Fixed buglet in bimodem counter.
0.23 Added NODE2BBS function.
0.24 Fixed problem with NODE2BBS.
0.25 Added USERLIST function.
0.26 Added RATIOK to USERLIST function. This gives a ratio of
downloads to uploads in KB's. Changed MESSAGES to MSGS in
USERLIST. Is a little more forgiving to mistakes in
FILES.BBS. Added ATTACH function.
1.16 compatible: Fixed LISTS to cure SBBS's uploads path in
the list name field in FLSEARCH.BBS. Corrected CALLERS
routine for new SCALLERS.BBS. Both the user pack and sort
routines now create the NAMEIDX.BBS file.
0.27 Added NEW option to files base report. Added FDCOUNT option.
Added code to check for sufficient disk space before packing
user base O-(. Fixed unsigned integer problem in user list
and system info. Added '*' for new files in master files
list. Corrected chronic problem with user sort and creation
of NAMEIDX.BBS file in the user sort routine. Added UPGRADE
feature.
0.28 Enlarged FDCount arrays, hopefully won't have memory problems.
Fixed 'incomplete' xfers in FDCount. In LISTS option, removed
the <notfound> parameter, now reads the default language file
in the system directory. See above. Removed overview file
from LISTS, will go into SBEST. Also fiddled with LISTS a
bit. Added POST, ANNOUNCE and TWIT options.
0.29 Changed name of NEWS to NODENEWS. It now posts the news
directly to a message board of your choice. See above. Added
SUTIL environment variable, see above. Added HIDELOCAL
function. Added CLEANMSG function. Added TRIMLOG function.
Expanded user sort function to about 500 or so records. Added
memory test to user sort and available disk space test to
alias functions. Added DATEFILE function. Added /D option to
POST function.
0.30 TRIMLOG function hopefully a little more forgiving. Overlayed
help and list functions to improve memory availability.
0.31 Added code to check for disk ready. Added Doors options. Added
FRDIRS function.
0.32 Added LostCarrier option.
0.33 Added FREQ function.
0.34 Fixed a few problems with the door counter and graph. Added
reset function to door counter. Fixed problem with datefile and
existing file names. Now searches for FLSEARCH in the line
directory first then in the system directory. Fixed wrong
directory reading msginfo in System Info.
0.35 LOSTCARRIER function adds entry to system log to avoid
duplicating messages to users. Fixed date/time problem posting
messages. Added FINDUSERS function. Added global error
checking, now it won't say 'Press any key ...' O-)
0.36 POST function now sets the 'echomail unsent' attribute. Fiddled
with 'free disk space' routine. Fixed SORTFILES zero length
file. Changed TWIT function commands, see above. Added subject
to TWIT function. Fixed problem with msgtxt size in POST
function.
0.37 Fixed buglet with Hurl in auto file. Added PACKFILES function.
Added Front Door 2.10 multi-line capability to the CALLERS
function, see new command line above. Added BOARDS function.
Fixed a number of problems with FDCOUNT & BIMCOUNT. 20% speed
improvement in files functions. Writes to the screen even if
being redirected. Fixed long area names in LISTS.
0.38 Further 25% speed improvement in files functions. Altered the
way the TWIT function works, see above for new command line. It
now includes a spec file and no longer uses the underscore
character. Found a possibly fatal problem with the TWIT
function deleting already deleted messages. Found possible bug
in files routine and ANNOUNCE function. Increased memory to
FDCOUNT and BIMCOUNT to work with bigger log files. SORT should
now be able to do well over 4,500 user records. Increased
capacity of ASWPACK & SORTFILES functions. Fixed bug with
POST/ANNOUNCE etc posting to large message base. TWIT now
shares the message base correctly.
0.39 Added HIGHMSG function. Added FDCALLERS function. Fixed bug in
ANNOUNCE function.
0.40 Rearranged door counter functions and added ability to reset a
single door, see above. Added SEARCHUSERS & RESETCOLORS
functions. Can now run embedded script files, see above. Added
DBCOUNT function. New files base report. Added security option
to global flag set/reset and global attribute set/reset. Added
'exclude file' option to ANNOUNCE function. Fixed problem with
door graph with more than 24 doors, see above. The file name is
changed from DOORGRPH to DOORGR? for as many screens as it
needs. Added FATT function, see above. Any ANS/ASC files will
be created in text directory specified in the default (or other)
language file, see above. Added DOORBAUD function. New
parameters for KILL function, please read the appropriate
section BEFORE running. Ugh! found a rather silly but fatal bug
in the RECOVER function. Extended file descriptions in ANNOUNCE
function. Rearranged UPGRADE function and added calls
parameter, see above. Fixed conflict between CALLERS/FDCALLERS.
All new menu driven environment. Adds about 80K to the size of
the exe but because of the overlays, it does not affect memory
availability. Added TMP environment variable. Added 'combined
mail check' and 'no hotkeys' to GAR/GAS. Added NOT keyword to
FINDUSERS function.
0.41 Fixed problem with weird DOS displays. Extended file
descriptions in new files list. BANNER.TXT must be in the SUtil
home directory. Added area number to files base report. Added
netmail attribute parameters to the FATT and FREQ functions.
Multiple files in the FREQ function must now be separated by
underscores. Added LCALIAS function. Added LIMITS function.
Added age, msgs and calls to user sort function. SysOps will go
to the top of the user base, see above. Added SETYELL function.
Gives up idle time to DV in the environment. Fixed ANNOUNCE bug
and probably a few others in the process. Functions in a script
can now be individually redirected, see above. Fixed disk size
figure in 'About SUtil'. Added SEARCHFILES function.
0.42 Download counters now follow the download counter digits set in
the config. Cleaned up master files list summaries. HURL
function now retains file date/time. HURL can now handle
multiple source files as well as wild cards, see above. Added
COMMENT function. Added ADDFILES function. Added BBSLIST
function. Language config now follows SBBS procedures more
closely, see above. LOSTCARRIER now updates a counter in the
user files, see above. Added CARRIERREPORT and CARRIERRESET
functions. Added SCount function. Modified DOORREPORT to
include config information. Report viewer handles larger files
and added search function. Command line help has been taken from
the exe into an external text file. The old help file,
SUTIL.HLP, is no longer needed. You should have SUTIL.H01 and
SUTIL.H02 help files. Added POPCOUNT function.
0.43 SBBS 1.17 update. Removed LCALIAS function, no longer required.
Altered CALLERS, FDCALLERS and HIDELOCAL to use new format
CALLERS.BBS. Files functions now maintain file date stamp
(hopefully got them all!). Added KILLCOMMS and SORTFLSEARCH
functions. Added 'users' field to BOARDS function.
0.44 Fixed nasty bug with files.bbs date/time stamp. Adjusted doors
functions to look for doorcfg.bbs in the line dir first then in
the system dir. Fixed bug in SORTFILES ALL routine.
┌─────────────────────────┐
│ │
│ Rough Productions │
│ Glenn Delahoy │
│ P.O. Box 211 │
│ Narre Warren Vic., 3805 │
│ BBS: 059 983 639 (V32) │
│ FidoNet: 3:635/572 │
│ │
└─────────────────────────┘